package br.com.foxinline.manager.pesquisar;

import br.com.foxinline.modelo.Grupo;
import br.com.foxinline.modelo.Usuario;
import br.com.foxinline.servico.UsuarioServico;
import br.com.foxinline.utilitario.Mensagem;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import javax.annotation.PostConstruct;
import javax.ejb.EJB;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import javax.faces.context.FacesContext;

/**
 *
 * @author cadomeireles
 */
@ManagedBean
@ViewScoped
public class ManagerPesquisarUsuario implements Serializable {
    
    @EJB
    UsuarioServico usuarioServico;
    
    private Usuario usuario;
    private Usuario usuarioDeletar;
    private Usuario usuarioVisualizar;
    private List<Usuario> usuarios;
    
    private List<Grupo> grupos;

    String visualizarId;
    
    @PostConstruct
    public void init() {
        instanciar();
        delegar();
    }
    
    private void delegar() {
        Map<String, String> parametros = FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap();
        this.visualizarId = parametros.get("usuarioId");

        if (visualizarId != null) {
            this.usuarioVisualizar = usuarioServico.pesquisar(Long.parseLong(visualizarId));
            this.grupos = new ArrayList<Grupo>();
        }
    }     

    public void instanciar() {
        this.usuario = new Usuario();
        this.usuarioDeletar = new Usuario();
        this.usuarioVisualizar = new Usuario();
        this.usuarios = new ArrayList<Usuario>();
    }

    public void pesquisar() {
        this.usuarios = usuarioServico.pesquisar(this.usuario);
    }

    public void limpar() {
        instanciar();
    }

    public void deletar() {
        usuarioServico.deletar(this.usuarioDeletar);
        
        pesquisar();
        Mensagem.messagemInfo("Usuário excluído com sucesso!");
    }
        
    public Usuario getUsuario() {
        return usuario;
    }

    public void setUsuario(Usuario usuario) {
        this.usuario = usuario;
    }

    public List<Usuario> getUsuarios() {
        return usuarios;
    }

    public void setUsuarios(List<Usuario> usuarios) {
        this.usuarios = usuarios;
    }

    public Usuario getUsuarioDeletar() {
        return usuarioDeletar;
    }

    public void setUsuarioDeletar(Usuario usuarioDeletar) {
        this.usuarioDeletar = usuarioDeletar;
    }

    public Usuario getUsuarioVisualizar() {
        return usuarioVisualizar;
    }

    public void setUsuarioVisualizar(Usuario usuarioVisualizar) {
        this.usuarioVisualizar = usuarioVisualizar;
    }

    public List<Grupo> getGrupos() {
        return grupos;
    }

    public void setGrupos(List<Grupo> grupos) {
        this.grupos = grupos;
    }

}
